package com.cskaoyan.service.impl;

import com.cskaoyan.bean.PageData;
import com.cskaoyan.mapper.MarketRoleMapper;
import com.cskaoyan.model.MarketRole;
import com.cskaoyan.service.RoleService;
import com.cskaoyan.utils.MyBatisUtil;
import org.apache.ibatis.session.SqlSession;

import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;

/**
 * @Author Pudding
 * @Date 2024/5/30 13:27
 */
public class RoleServiceImpl implements RoleService {
    @Override
    public PageData options() {
        //1. 通过mybatis获取到market_role角色表中的数据，作为data中的list
        SqlSession sqlSession = MyBatisUtil.getSqlSession();
        MarketRoleMapper roleMapper = sqlSession.getMapper(MarketRoleMapper.class);
        List<MarketRole> marketRoles = roleMapper.selectByExample(null);

        //2.将marketRoles中每一个对象中的id和name封装给一个List对象RoleOptionsData，这个对象中的对应的字段为value和label
        //我们可以使用下面的流来进行，大大简化了操作。（将一个List中的两个参数，赋值给另一个List中的两个不同的参数）
        List<Map<String, Object>> list = marketRoles.stream().map(role -> {
            Map<String, Object> map = new HashMap<>();
            map.put("value", role.getId());
            map.put("label", role.getName());
            return map;
        }).collect(Collectors.toList());

        //3. 将list数据封装到pageData。注意这里调用pageData.list()方法即可，
        // 因为这个方法里面给pageData参数赋值了，且通过分页插件中的PageInfo给分页参数进行赋值了
        PageData pageData = PageData.list(list);

        //4. 返回响应报文中data数据
        return pageData;
    }
}
